Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188192 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/iterator b/include/iterator index 858510d..87d6d1d 100644 --- a/include/iterator +++ b/include/iterator
@@ -333,11 +333,11 @@ _LIBCPP_BEGIN_NAMESPACE_STD -struct _LIBCPP_TYPE_VIS input_iterator_tag {}; -struct _LIBCPP_TYPE_VIS output_iterator_tag {}; -struct _LIBCPP_TYPE_VIS forward_iterator_tag : public input_iterator_tag {}; -struct _LIBCPP_TYPE_VIS bidirectional_iterator_tag : public forward_iterator_tag {}; -struct _LIBCPP_TYPE_VIS random_access_iterator_tag : public bidirectional_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY input_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY output_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY forward_iterator_tag : public input_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY bidirectional_iterator_tag : public forward_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY random_access_iterator_tag : public bidirectional_iterator_tag {}; template <class _Tp> struct __has_iterator_category @@ -380,11 +380,11 @@ // the client expects instead of failing at compile time. template <class _Iter> -struct _LIBCPP_TYPE_VIS iterator_traits +struct _LIBCPP_TYPE_VIS_ONLY iterator_traits : __iterator_traits<_Iter, __has_iterator_category<_Iter>::value> {}; template<class _Tp> -struct _LIBCPP_TYPE_VIS iterator_traits<_Tp*> +struct _LIBCPP_TYPE_VIS_ONLY iterator_traits<_Tp*> { typedef ptrdiff_t difference_type; typedef typename remove_const<_Tp>::type value_type; @@ -415,7 +415,7 @@ template<class _Category, class _Tp, class _Distance = ptrdiff_t, class _Pointer = _Tp*, class _Reference = _Tp&> -struct _LIBCPP_TYPE_VIS iterator +struct _LIBCPP_TYPE_VIS_ONLY iterator { typedef _Tp value_type; typedef _Distance difference_type; @@ -512,7 +512,7 @@ } template <class _Iter> -class _LIBCPP_TYPE_VIS reverse_iterator +class _LIBCPP_TYPE_VIS_ONLY reverse_iterator : public iterator<typename iterator_traits<_Iter>::iterator_category, typename iterator_traits<_Iter>::value_type, typename iterator_traits<_Iter>::difference_type, @@ -619,7 +619,7 @@ } template <class _Container> -class _LIBCPP_TYPE_VIS back_insert_iterator +class _LIBCPP_TYPE_VIS_ONLY back_insert_iterator : public iterator<output_iterator_tag, void, void, @@ -652,7 +652,7 @@ } template <class _Container> -class _LIBCPP_TYPE_VIS front_insert_iterator +class _LIBCPP_TYPE_VIS_ONLY front_insert_iterator : public iterator<output_iterator_tag, void, void, @@ -685,7 +685,7 @@ } template <class _Container> -class _LIBCPP_TYPE_VIS insert_iterator +class _LIBCPP_TYPE_VIS_ONLY insert_iterator : public iterator<output_iterator_tag, void, void, @@ -721,7 +721,7 @@ template <class _Tp, class _CharT = char, class _Traits = char_traits<_CharT>, class _Distance = ptrdiff_t> -class _LIBCPP_TYPE_VIS istream_iterator +class _LIBCPP_TYPE_VIS_ONLY istream_iterator : public iterator<input_iterator_tag, _Tp, _Distance, const _Tp*, const _Tp&> { public: @@ -760,7 +760,7 @@ }; template <class _Tp, class _CharT = char, class _Traits = char_traits<_CharT> > -class _LIBCPP_TYPE_VIS ostream_iterator +class _LIBCPP_TYPE_VIS_ONLY ostream_iterator : public iterator<output_iterator_tag, void, void, void, void> { public: @@ -789,7 +789,7 @@ }; template<class _CharT, class _Traits> -class _LIBCPP_TYPE_VIS istreambuf_iterator +class _LIBCPP_TYPE_VIS_ONLY istreambuf_iterator : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type, _CharT*, _CharT> @@ -860,7 +860,7 @@ {return !__a.equal(__b);} template <class _CharT, class _Traits> -class _LIBCPP_TYPE_VIS ostreambuf_iterator +class _LIBCPP_TYPE_VIS_ONLY ostreambuf_iterator : public iterator<output_iterator_tag, void, void, void, void> { public: @@ -901,7 +901,7 @@ }; template <class _Iter> -class _LIBCPP_TYPE_VIS move_iterator +class _LIBCPP_TYPE_VIS_ONLY move_iterator { private: _Iter __i;